home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / CRS / crs05.d81 / evsbasic.arc / EVSKEYWORDS.T-Z < prev    next >
Text File  |  2009-10-10  |  8KB  |  252 lines

  1. ---------------------------------------
  2.  
  3. SD
  4.  
  5. SD is a pseudovariable (it cannot be assigned a value by a program) that
  6. returns the activity status of the three sound voices.  Each active voice
  7. is represented in a <sum> value returned by SD.  Voice 1 adds 1 to the
  8. <sum>, voice 2 adds 2, and voice 3 adds 4.  SD ranges from 0 (no voice is
  9. active) to 7 (1+2+4, all three voices active).
  10.  
  11. Examples:
  12.  
  13. 10 PRINT SD
  14. 20 DO: LOOP UNTIL SD=0
  15.  
  16. --------------------------------------
  17.  
  18. TONE <voice# [,<sum>]>, <frequency> [,<duration>]
  19.  
  20. The TONE statement sets the fundamental frequency of one or more voices,
  21. turns them on or off, and sets the length of time voices will be active.
  22.  
  23. <Voice# [,<sum>]> has the same form and behavior as described for the
  24. ENVELOPE statement.
  25.  
  26. <Frequency> may range from 0 to 65535 and produces an actual frequency
  27. according to the equation (for NTSC (North American) systems):
  28.  
  29. <Actual> = <frequency> * 0.60959458 Hz
  30.  
  31. If <frequency> is non-zero, the ADSR cycle of the voice specified is
  32. started and the pseudovariable SD will indicate the voice active. It is
  33. important to note that being active is not the same thing as being audible.
  34. For example, if a voice with a sustain value of zero is activated for an
  35. indefinite period of time, it will produce a tone that will die away and
  36. become inaudible, but SD will continue to indicate the voice active until
  37. it is explicitly turned off.
  38.  
  39. If <frequency> is non-zero and <duration> is not present, the voice will be
  40. turned on and remain on indefinitely.  The net effect is that the voice
  41. will never be released, executing only the attack, decay, and sustain
  42. phases of the ADSR envelope.  To turn the voice off or to restart the ADSR
  43. cycle, another TONE statment must be executed.
  44.  
  45. If <frequency> is zero the voice will be turned off and <duration> has no
  46. effect.
  47.  
  48. <Duration> may range from 0 to 255.  If <duration> is non-zero it sets the
  49. the number of "jiffies" the voice will be active for.  A "jiffy" is one
  50. tick of the software jiffy clock (about 1/60th of a second, or 16
  51. milliseconds).  The maximum <duration> therefore represents about four
  52. seconds.  If the <duration> is for less time than the release point set by
  53. the ENVELOPE statement the release will not occur before the voice is
  54. turned off.
  55.  
  56. If <duration> is zero <frequency> will be set but the voice will not be
  57. turned on.  This can be used to set the frequency of the second voice used
  58. for synchronization or ring modulation.
  59.  
  60. Examples:
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68. 10 TONE 1, 10000
  69. 20 TONE I, F(I), D(I)
  70. 30 IF SD<>0 THEN TONE 0, 7, 0
  71.  
  72. ---------------------------------------
  73.  
  74. UNTIL <exp>
  75.  
  76. The optional UNTIL keyword following immediately after a DO or LOOP
  77. statement allows execution of a DO/LOOP to continue only so long as the
  78. <exp> is zero (false).  If the <exp> is non-zero (true), the loop is exited
  79. and program execution continues with the statement following the LOOP that
  80. matches the DO.
  81.  
  82. Examples:
  83.  
  84. 10 DO UNTIL A<>0
  85. 20 LOOP UNTIL ST=64
  86. 30 DO: GET A$: LOOP UNTIL A$<>""
  87.  
  88. ---------------------------------------
  89.  
  90. VERIFY [<filename$>] [,<dvc#>]
  91.  
  92. The V2 Basic command VERIFY has been modified to verify a file on the
  93. default mass-storage device if <dvc#> is not specified.  There is no other
  94. change in its behavior.
  95.  
  96. Examples:
  97.  
  98. 10 VERIFY
  99. 20 VERIFY "MYPROGRAM"
  100. 30 VERIFY "THISPROGRAM",9
  101.  
  102. --------------------------------------
  103.  
  104. VOL <volume>
  105.  
  106. VOL sets the overall volume of the SID chip.  <Volume> may range from 0 to
  107. 15.  Volume must be set to a non-zero value before any sound can be heard.
  108.  
  109. Example:
  110.  
  111. 10 VOL 15
  112. 20 VOL V(I)
  113.  
  114. ---------------------------------------
  115.  
  116. WAVE <voice# [,<sum>]> [,<waveform> [,<pulsewidth>]]
  117.  
  118. The WAVE statement sets the fundamental waveform of a voice, which
  119. primarily affects timbre, or tonal quality.  The <pulsewidth> parameter
  120. offers additional control over the timbre of the pulse waveform.
  121.  
  122. <Waveform> may range from 0 to 4:
  123.  
  124. #   Waveform   Timbre
  125.  
  126. 0   triangle   mellow, flute-like
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133. 1   sawtooth   bright, brassy
  134. 2   pulse      nasal, reedy to bright, hollow
  135. 3   noise      rumbling to hissing
  136. 4   ring       bell, gong
  137.  
  138. The <pulsewidth> parameter affects the timbre of only the pulse waveform,
  139. although it may be included whatever waveform is being specified.
  140. <Pulsewidth> may range from 0 to 4095.  Values at the extremes tend to
  141. produce a nasal, reedy timbre while values toward the middle of the range
  142. tend to produce a bright, hollow timbre.
  143.  
  144. The ring waveform is really the triangular waveform of one voice "ring
  145. modulated" with a second voice.  Varying the frequency of the first voice
  146. with respect to the second produces a wide range of non-harmonic overtones
  147. useful for bell or gong sounds.  The second voice must have a non-zero
  148. frequency, and no other parameter of the second voice has any effect.
  149.  
  150. Synchronization effects can be added to any voice by adding 8 to the
  151. <waveform> number.  This synchronizes the fundamental frequencies of two
  152. voices, producing complex harmonics in the first voice at the frequency of
  153. the second.  The second voice must have a non-zero frequency, preferably
  154. lower than the frequency of the first voice, and no other parameter of the
  155. second voice has any effect.
  156.  
  157. For both ring modulation and synchronization the relationships between the
  158. first and second voices are fixed.  Voice 3 always uses voice 2 as the
  159. second voice, voice 2 uses voice 1, and voice 1 uses voice 3.
  160.  
  161. Examples:
  162.  
  163. 10 WAVE 1, 3
  164. 20 WAVE 2, 2, 2048
  165. 30 FOR I=0 TO 4095: WAVE A, , I: NEXT
  166.  
  167. ---------------------------------------
  168.  
  169. WHILE <exp>
  170.  
  171. The optional WHILE keyword following immediately after a DO or LOOP
  172. statement allows execution of a DO/LOOP to continue only so long as the
  173. <exp> is non-zero (true).  If the <exp> is zero (false), the loop is exited
  174. and program execution continues with the statement following the LOOP that
  175. matches the DO.
  176.  
  177. Examples:
  178.  
  179. 10 DO WHILE A=0
  180. 20 LOOP WHILE ST<>64
  181. 30 DO: GET A$: LOOP WHILE A$=""
  182.  
  183. ---------------------------------------
  184.  
  185. WRITE <exp> [[;][<exp>]...]
  186.  
  187. The WRITE statement puts text on the physical (not the logical) screen in
  188. the bitmap modes.  It behaves very much like the PRINT statement does for
  189. the text screens.  Like PRINT, WRITE will accept any expression, string or
  190. numeric.  WRITE also responds to a number of control characters.
  191.  
  192. The upper left corner of the first character of <exp> is placed at the
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199. current cursor position (other than this, WRITE does not pay attention to
  200. logical screen coordinates.  Character sizes are constant no matter what
  201. the logical screen size).  Characters must fit entirely on the screen.
  202. After each printable character is placed on the screen WRITE tabs the
  203. cursor right the current character size, so the cursor is at the upper left
  204. corner of the next character.
  205.  
  206. The cursor will not move past the top or bottom edge of the screen, but
  207. will wrap at the left and right edges.  Tabbing past the left and right
  208. edges will also move the cursor up or down the current character size,
  209. provided it is not also at the top or bottom edge.
  210.  
  211. WRITE will accept as many expressions as will fit on a program line,
  212. optionally separated by semicolons.  Like PRINT, WRITE performs an implied
  213. carriage return following the last expression, except if the last
  214. expression is followed by a semicolon.  In this case the cursor remains at
  215. the last position <exp> caused it to move to.
  216.  
  217. The control codes recognized by WRITE are:
  218.  
  219. Action            Character   CHR$()
  220.  
  221. Set Pen 0            CTRL-Z     26
  222. Set Pen 1            CTRL-X     24
  223. Set Pen 2            CTRL-C      3
  224. Set Pen 3            CTRL-V     22
  225. Set Pen 4            CTRL-B      2
  226.  
  227. Normal X-size          F1      133
  228. Double X-size          F2      137
  229. Normal Y-size          F3      134
  230. Double Y-size          F4      138
  231.  
  232. Set Uppercase                  142
  233. Set Lowercase        CTRL-N     14
  234. Disable Switching    CTRL-H      8
  235. Enable Switching     CTRL-I      9
  236. Reverse On           CTRL-R     18
  237. Reverse Off                    146
  238.  
  239. Home                 CTRL-S     19
  240. Clear/Home                     147
  241. Return               CTRL-M     13
  242. Cursor Down          CRSR-DN    17
  243. Cursor Right         CRSR-RT    29
  244. Cursor Up            CRSR-UP   145
  245. Cursor Left          CRSR-LF   157
  246.  
  247. Examples:
  248.  
  249. 10 WRITE "HELLO"
  250. 20 WRITE "COUNT";A(I)
  251. 30 WRITE A$+B$;
  252.